home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / amiexpress / source / doors / flagfile / flagshort.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-12-26  |  7.5 KB  |  354 lines

  1. #include <exec/types.h>
  2. #include <exec/exec.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <time.h>
  6. #include "dh1:source/doors/romconf/doorheader.h"
  7. #include "code:express.h"
  8. struct Commands Cmds;
  9. #define SM sendmessage
  10. #define sm sendmessage
  11. #define pm prompt
  12. #define PM prompt
  13. #define HK hotkey
  14. #define hk hotkey
  15. #define GU getuserstring
  16. #define sr StripReturn
  17. char Date[12];
  18. char MenuLocal[]="DOORS:AEShell/Menu";
  19. void end();
  20. void GetLocal();
  21. void MoveIt();
  22. void DeleteIt();
  23. void CopyIt();
  24. void ListIt();
  25. void Help();
  26. void ViewIt();
  27. void DeterAccess();
  28. void MoveToNode();
  29. void RenameIt();
  30. void MakeIt();
  31. void DisplayError();
  32. void StripReturn();
  33. void ViewDesc();
  34.  char MasterFile[200];
  35. int Reserved(char *Str,char Filter[]);
  36. int MakeU=0;
  37. int MakeH=0;
  38. int Yes=0;
  39. void FlagThem();
  40. void MarkNumbers(char *str);
  41. long NumList[2000];
  42. int NumChoose[2000];
  43. void main(int argc,char *argv[]);
  44. void ConvertDate(long);
  45. void LastCommand(void);
  46. void main(int argc,char *argv[])
  47. {
  48.   char CMD[200];
  49.   char CD[200];
  50.   char conf[200];
  51.   char BBS[200];
  52.   FILE *fi;
  53.   int i=0;
  54.   if(argc!=2)
  55.   {
  56.      printf("FlagShort v1.1, written by Joseph Hodge\n");
  57.      printf("Compatible with AmiExpress v1.1u+\n");
  58.      printf("This is a type 'X' door.\n");
  59.      exit(0);
  60.   }
  61.   Register(argv[1][0]-'0');
  62.   while(i<2000)
  63.   {
  64.     NumList[i]=-1L;
  65.     NumChoose[i]=-1;
  66.     i++;
  67.   }
  68.   GU(CMD,BB_LOCAL);
  69.   strcpy(BBS,CMD);
  70.   sprintf(CD,"%s>",CMD);
  71.   strcat(CMD,"Config1");
  72.   fi=fopen(CMD,"rb");
  73.   fread((APTR)&Cmds,sizeof(struct Commands),1,fi);
  74.   fclose(fi);
  75.   SM("FlagShort v1.1  written by Joseph Hodge",1);
  76.   ViewDesc(); 
  77.   ShutDown();
  78.   end();
  79. }
  80. void ViewDesc()
  81. {
  82.   FILE *fi;
  83.   char Dir[200];
  84.   char FileName[200];
  85.   int ndir;
  86.   int Lines;
  87.   long TheDate;
  88.   int FoundDate;
  89.   long NumberFiles=0L;
  90.   int cline=0;
  91.   long Position;
  92.   long Ks;
  93.   long timelast;
  94.   long FileNum=0L;
  95.   char Numbers[200];
  96.   char Number[200];
  97.   BOOL GoodDate=FALSE;
  98.   strcpy(Numbers,"");
  99.   GU(Dir,DT_TIMELASTON);
  100.   timelast=atol(Dir);
  101.   GU(Dir,DT_LINELENGTH);
  102.   Lines=atoi(Dir);
  103.   GU(Dir,BB_CONFLOCAL);
  104.   strcat(Dir,"ndirs");
  105.   fi=fopen(Dir,"r");
  106.   if(fi==NULL)
  107.   {
  108.     sm("Files are not supported in this conference.",1);
  109.     return;
  110.   }
  111.   fgets(Dir,80,fi); fclose(fi);
  112.   ndir=atoi(Dir);
  113.   sm("",1);
  114.   sprintf(Dir,"There are %d Dir listings in this conference.",ndir);
  115.   sm(Dir,1);
  116.   sprintf(Dir,"Which Dir listing would you like to FlagFrom,<Q>, or [ENTER=%d] >:",ndir);
  117.   sm(Dir,0);
  118.   pm("",Dir,3);
  119.   if(Dir[0]=='\0') sprintf(Dir,"%d",ndir); 
  120.    
  121.   if(atoi(Dir)>ndir || atoi(Dir)<1 || Dir[0]=='Q' || Dir[0]=='q')
  122.   {
  123.     
  124.     if(Dir[0]=='Q' || Dir[0]=='q') return;
  125.     sm("",1);
  126.     sm("That Dir listing does not exist!",1);
  127.     return;
  128.   }
  129.   ndir=atoi(Dir);
  130.   GU(Dir,BB_CONFLOCAL);
  131.   sprintf(FileName,"%sdir%d",Dir,ndir);
  132.   sm("",1);
  133.   ConvertDate(timelast);
  134.   sprintf(Dir,"Enter From Date mm-dd-yy or [ENTER=%s]>:",Date);
  135.   pm(Dir,Date,8);
  136.   if(Date[0]=='\0') ConvertDate(timelast); 
  137.   if(strlen(Date)==8)
  138.   {
  139.      TheDate=atol(&Date[6])*365L+atol(Date)*32L+atol(&Date[3]);
  140.   }
  141.   else { TheDate=0; GoodDate=TRUE;}
  142.  
  143.   fi=fopen(FileName,"r"); 
  144.   if(fi==NULL)
  145.   {
  146.     sm("Error! Cannot locate that directory listing.",1);
  147.     return;
  148.   }strcpy(MasterFile,FileName);
  149.   cline = Lines-3;
  150.   Position=ftell(fi);
  151.   sm("            num = Passed Test    num = Test Not Required",1);
  152.   sm("",1);
  153.  
  154.   while(fgets(Dir,180,fi)!=NULL)
  155.   {
  156.     if(!cline)
  157.     {
  158.       sm("Press [Return],Q)uit or FileNum seperated by commas",1);
  159.       pm(">:",Number,200);
  160.       if(Number[0]=='Q' || Number[0]=='q') { fclose(fi); break;}
  161.         
  162.       if(Number[0]!='\0')
  163.       {
  164.          MarkNumbers(Number);}
  165.          cline=Lines-3;
  166.       
  167.     }
  168.     
  169.     
  170.     sr(Dir);
  171.    
  172.     if(Dir[25]=='-' && Dir[28]=='-' && Dir[27]!='-')
  173.     {
  174.       FileNum +=1L;
  175.       NumList[FileNum]=Position;
  176.       Ks=atol(&Dir[14])/1000;
  177.       if(Dir[13]=='P')
  178. sprintf(FileName,"%4d.%-13.13s%4dK%-9.9s%s",FileNum,Dir,Ks,&Dir[22],&Dir[32]);
  179.       else
  180. sprintf(FileName,"%4d.%-13.13s%4dK%-9.9s%s",FileNum,Dir,Ks,&Dir[22],&Dir[32]);
  181.  
  182.       if(TheDate<=atol(&Dir[29])*365L+atol(&Dir[23])*32L+atol(&Dir[26]))
  183.       GoodDate=TRUE;
  184.       if(GoodDate){if(GoodDate)cline--;
  185.       sm(FileName,1);}
  186.     }
  187.     Position=ftell(fi);
  188.   }
  189.    if(cline && GoodDate==TRUE)
  190.     {
  191.       sm("Press [Return],or FileNum seperated by commas",1);
  192.       pm(">:",Number,200);
  193.       if(Number[0]!='\0')
  194.       {
  195.          MarkNumbers(Number);}
  196.          cline=Lines-3;
  197.       
  198.     }
  199.   
  200.   fclose(fi);
  201.   if(Yes) 
  202.   {
  203.     sm("Flagging Files, Please standby",1);
  204.     FlagThem();
  205.   }
  206. }
  207. void FlagThem()
  208. {
  209.    register int i;
  210.    FILE *fi;
  211.    char image[200];
  212.    char temp[200];
  213.    long Position;
  214.    fi=fopen(MasterFile,"rb");
  215.    i=1; while(i<1000)
  216.    {
  217.       if(NumChoose[i]==1)
  218.       {
  219.          
  220.          fseek(fi,NumList[i],SEEK_SET);
  221.          fgets(image,13,fi);
  222.          sr(image);
  223.          sprintf(temp,"flagged file [%3d%s",i,image);
  224.          sm(temp,1);
  225.          FlagFile(image);
  226.       }
  227.       i++;
  228.    }
  229.    fclose(fi);
  230. }
  231. void MarkNumbers(char *str)
  232. {
  233.   char Number[200];
  234.   register int i;
  235.   register int j;
  236.   register int k;
  237.   long num;
  238.   strcpy(Number,str);
  239.   i=0;
  240.   k=strlen(Number);
  241.   j=1;
  242.   while(i<k)
  243.   {
  244.     if(j) { num=atol(&Number[i]); 
  245.             if(num>0L && num<1000L)
  246.             {
  247.  
  248.               if(NumList[num]>-1L)
  249.               {
  250.                 NumChoose[num]=1; Yes=1;
  251.               }
  252.             }
  253.           }
  254.     if(Number[i]==',') j=1; else j=0;
  255.     i++;
  256.   }
  257. }
  258.   
  259. void DeterAccess()
  260. {
  261.   char NAME[200];
  262.   char CMD[200];
  263.   char FileName[200];
  264.   char Password[200];
  265.   FILE *fi;
  266.   register int i=0;
  267.   getuserstring(NAME,DT_NAME);
  268.   strupr(NAME);
  269.   strcpy(CMD,"DOORS:AEShell/CoSysops");
  270.   strcpy(FileName,CMD);
  271.   sm("Enter Password >:",0);
  272.   strcpy(Password,"");
  273.   i=0;
  274.   do
  275.   {
  276.      hk("",CMD); strupr(CMD);
  277.      if(CMD[0]!=13 && CMD[0]!='\0'){ strcat(Password,CMD);sm("X",0);}
  278.      i++;
  279.    }while(CMD[0]!=13 && CMD[0]!='\0' && i<20);
  280.    sm("",1);
  281.     fi=fopen(FileName,"r");
  282.     if(fi==NULL)
  283.     {
  284.      SM("You are not a CoSysop for this Bulletin Board.",1);
  285.       ShutDown();
  286.       end();
  287.     }
  288.     strcat(NAME,"-");
  289.     strcat(NAME,Password);
  290.     while(fgets(CMD,80,fi)!=NULL)
  291.     {
  292.       StripReturn(CMD);
  293.       strupr(CMD);
  294.       
  295.       if(!strcmp(NAME,CMD))
  296.       { 
  297.         SM("Access Authenticated.",1);
  298.         fclose(fi);
  299.         return;
  300.       }
  301.   }  
  302.   fclose(fi);
  303.   SM("Access Denied, Please consult the Sysop regarding Access.",1);
  304.   ShutDown();
  305.   end();  
  306. }
  307.  
  308. void StripReturn(char *str)
  309. {
  310.    register int i;
  311.    i=strlen(str);
  312.    while(i>0)
  313.    {
  314.       if(*(str+i)<32) *(str+i)='\0'; else return;
  315.       i--;
  316.    }
  317. }
  318. void end()
  319. {
  320.   exit(0);
  321. }
  322. void ConvertDate(long t)
  323. {
  324.   struct tm *tp;
  325.   int M,D,Y;
  326.   long tg;
  327.   char Day[4],Month[5],Year[3];
  328.   char TheTime[27];
  329.   tg=t;
  330.   tp=localtime(&tg);
  331.   sprintf(TheTime,"%s",asctime(tp));
  332.   sprintf(Day,"%.2s",&TheTime[8]);
  333.   sprintf(Month,"%.3s",&TheTime[4]);
  334.   sprintf(Year,"%.2s",&TheTime[22]);
  335.    D=atoi(Day);
  336.    Y=atoi(Year);
  337.  
  338.   if(!strncmp(Month,"Jan",3)) M=1;
  339.   if(!strncmp(Month,"Feb",3)) M=2;
  340.   if(!strncmp(Month,"Mar",3)) M=3;
  341.   if(!strncmp(Month,"Apr",3)) M=4;
  342.   if(!strncmp(Month,"May",3)) M=5;
  343.   if(!strncmp(Month,"Jun",3)) M=6;
  344.   if(!strncmp(Month,"Jul",3)) M=7;
  345.   if(!strncmp(Month,"Aug",3)) M=8;
  346.   if(!strncmp(Month,"Sep",3)) M=9;
  347.   if(!strncmp(Month,"Oct",3)) M=10;
  348.   if(!strncmp(Month,"Nov",3)) M=11;
  349.   if(!strncmp(Month,"Dec",3)) M=12; 
  350.   sprintf(Date,"%02d-%02d-%02d",M,D,Y);
  351. }
  352. void LastCommand(void)
  353. {
  354. }